package com.woniuxy.yoga.user.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.woniuxy.yoga.commons.core.model.PageInfo;
import com.woniuxy.yoga.user.dao.model.UserLoginLog;
import com.woniuxy.yoga.user.dao.mapper.UserLoginLogMapper;
import com.woniuxy.yoga.user.model.param.SearchLoginLogParam;
import com.woniuxy.yoga.user.service.UserLoginLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 用户登录日志表 服务实现类
 * </p>
 *
 * @author 韦用文,刘存益,郎腾霄
 * @since 2023年11月28日
 */
@Service
public class UserLoginLogServiceImpl extends ServiceImpl<UserLoginLogMapper, UserLoginLog> implements UserLoginLogService {

    @Autowired
    private UserLoginLogMapper userLoginLogMapper;

    /**
     * 分页查询登录日志
     * @param param 参数
     * @return 分页数据
     */
    @Override
    public PageInfo searchLoginLog(SearchLoginLogParam param) {
        if (ObjectUtil.isEmpty(param.getPageNum()))
            param.setPageNum(1);
        if (ObjectUtil.isEmpty(param.getPageSize()))
            param.setPageSize(10);
        //创建查询
        QueryWrapper<UserLoginLog> wrapper = new QueryWrapper<>();
        if (ObjectUtil.isNotEmpty(param.getUserName()))
            wrapper.like("user_name",param.getUserName());
        if (ObjectUtil.isNotEmpty(param.getUserPhone()))
            wrapper.like("user_phone",param.getUserPhone());
        if (ObjectUtil.isNotEmpty(param.getStartTime()))
            wrapper.ge("log_time",param.getStartTime());
        if (ObjectUtil.isNotEmpty(param.getEndTime()))
            wrapper.le("log_time",param.getEndTime());
        wrapper.orderByAsc("log_id");
        //创建分页对象
        Page<UserLoginLog> page = new Page<>(param.getPageNum(),param.getPageSize());
        userLoginLogMapper.selectPage(page,wrapper);
        PageInfo pageInfo = BeanUtil.toBean(page, PageInfo.class);
        pageInfo.setPages(page.getPages());
        pageInfo.setRecords(page.getRecords());
        return pageInfo;
    }
}
